// 一个简单的函数
pub fn add(a: i32, b: i32) -> i32 {
    a + b
}

// 返回单元类型的函数
pub fn ret_unit_type() -> () {
    println!("This function returns the unit type");
    // 不需要显式返回，默认返回 ()
}

// 声明 faction 模块
pub mod faction;

// 测试模块
#[cfg(test)]
mod tests {
    // 导入父模块中的所有内容
    use super::*;

    #[test]
    fn test_add() {
        assert_eq!(add(2, 3), 5);
        assert_eq!(add(-1, 1), 0);
        assert_eq!(add(0, 0), 0);
    }
    
    #[test]
    fn test_ret_unit_type() {
        // 对于返回 () 的函数，我们测试它能否正常执行
        let result = ret_unit_type();
        // 单元类型只有一个可能的值，即 ()
        assert_eq!(result, ());
    }
} 